<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <!-- 
    浅拷贝：创建一个新对象，这个对象有着原始对象属性值的一份精确拷贝。
           如果{属性}是基本类型，拷贝的就是基本类型的值，如果{属性}是引用类型，拷贝的就是内存地址 
    深拷贝：深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象
    区别：
    浅拷贝 基本类型之前互不影响，引用类型其中一个对象改变了地址，就会影响另一个对象；
    深拷贝 改变新对象不会影响原对象，他们之前互不影响。
    
    实现浅拷贝的方法:object.assign(), 扩展运算符 ...,concat(),slice() 
    深拷贝： JSON.parse(JSON.stringify)
   -->
   <script>
     let obj = {a: 1, arr: {b: 2, c: 3}}
    //  扩展运算符 ...    扩展运算符还可以在里面修改obj的值，或者增加值
      //如： let ob1 = {...obj,a: 2,c:5}
     let obj1 = {...obj}
     obj1.a = 22
     obj1.arr.b = 1
     console.log(obj);
     console.log(obj1);
     console.log(obj.arr === obj1.arr) //true
     console.log('-------------');
     let o = {A: 2, arr: {B:3}}
     let o1 = Object.assign({},o)
     o1.arr.B = 5
     o1.A = 4
     console.log(o);
     console.log(o1);
     console.log(o.arr === o1.arr);

    //  深拷贝
    let oo = {name: 'likun', action: {say: 'hi'}}
    let oo1 = JSON.parse(JSON.stringify(oo))
    oo1.action.sat = 'hello'
    console.log(oo)
    console.log(oo1)
    console.log(oo.action === oo1.action)  //false
   </script>
</body>
</html>